package portal.web.delegate;

import java.util.List;

import portal.entidades.Articulo;
import portal.entidades.Compra;
import portal.entidades.Configuracion;
import portal.entidades.RankingArticulo;
import portal.entidades.Resultado;
import portal.entidades.Usuario;
import portal.facade.Facade;

public class PortalWebDelegate implements IPortalWebDelegate {

	private Facade facade;

	public static IPortalWebDelegate getInstanace() {
		return new PortalWebDelegate();
	}

	private PortalWebDelegate() {
		facade = (Facade) ServiceLocator.getService("FacadeBean", Facade.class);
	}

	@Override
	public Usuario login(String nombre, String password) {
		return facade.login(nombre, password);
	}

	@Override
	public List<Configuracion> listar() {
		return facade.listar();
	}

	@Override
	public void borrarConfiguracion(Long id) {
		facade.eliminarUsuario(id);
	}

	@Override
	public void agregarConfiguracion(Configuracion configuracion) {
		facade.agregarConfiguracion(configuracion);

	}

	@Override
	public void actualizarConfiguraciones(Configuracion configuracion) {
		facade.actualizarConfiguraciones(configuracion);
	}

	@Override
	public List<Articulo> listarArticlos() {
		return facade.listarArticulos();
	}
	
	@Override
	public List<Articulo> listarArticlosBetSellers(){
		return facade.listarArticlosBetSellers();
	}

	@Override
	public List<Compra> listarMisCompras(Long id_usuario) {
		return facade.listarMisCompras(id_usuario);
	}

	@Override
	public List<Compra> listarCompras() {
		return facade.listarCompras();
	}

	@Override
	public void agregarItemCompra(Long IdCompra, Long IdArticulo, Double precio, Integer cantidad) {
		 facade.agregarItemCompra(IdCompra, IdArticulo, precio, cantidad );
	}

	@Override
	public void eliminarItemCompra(Long IdCompra, Long IdArticulo) {
		 facade.eliminarItemCompra(IdCompra, IdArticulo );
	}

	@Override
	public void checkoutCompra(Long idCompra, Double total) {
		facade.checkoutCompra(idCompra,total);
		
	}

	@Override
	public Resultado actualizarRanking(List<RankingArticulo> ranking) {
		return facade.actualizarRanking(ranking);
	}

	@Override
	public void updateItemCompra(Long idCompra, Long idArticulo, Double cantidad) {
		facade.updateItemCompra(idCompra, idArticulo, cantidad);
	}

	@Override
	public Compra crearCompra(Compra c_nva) {
		return facade.crearCompra(c_nva);
	}


}
